1. Field of the Invention
The present invention relates to channel coders for digital wireless communications devices. More particularly, the present invention provides a method and apparatus for a digital wireless communications device to determine in real-time certain scalable channel coding scheme parameters. In a preferred embodiment, a memory is arranged as a three-dimensional code book which provides the appropriate scheme parameters in real-time without calculating the parameters in real-time.
2. Discussion of Related Art
FIG. 1 is a simplified block diagram of a transmission portion of a digital wireless communications device 100. One such device is a digital cellular phone which may be used with a TMS320C5x digital signal processor made by Texas Instruments, Dallas, Tex. or other suitable processor. A preferred digital cellular phone may include a microphone 102, an analog-to-digital converter (ADC) 104, a speech coder 106, a channel coder 108, a modulator/transmitter 110, and an antenna 120.
The transmission portion of the digital cellular device 100 of FIG. 1 may operate in the following manner. A sound, such as a speaker's voice, is detected by the microphone 102 and converted into an analog electrical signal. The analog electrical signal is converted into a digital signal by the ADC 104. The digital signal is then speech coded by the speech coder 106 using, for example, a vector sum excited linear prediction (VSELP) code. This speech coding compresses the digital signal.
The compressed digital signal may then be channel encoded by the channel encoder 108. The channel encoder's main function is to protect the digital signal against noise and fading inherent in a radio channel, such as is used for a cellular telephone system. The channel encoder 108 may perform several functions, such as convolution encoding, cyclic redundancy check (CRC) generation, interleaving the signal into appropriate slots, and burst generation. Each of these functions is briefly described.
Convolutional encoding provides error correction by adding redundancy to the transmitted signal. Convolutional encoding is described below in more detail. CRC is the addition of several bits (such as five or seven) to a block of important information bits in the transmitted signal. The value of the CRC code bits is used by a receiving decoder to determine whether or not an error exists in the received block of information bits. Interleaving is the division of the data from each frame of information bits into two transmit slots. Thus, if one slot is lost, it is unlikely that the second slot will also be lost. As a result, not all bits from a speech frame are likely to be lost. Burst generation is the time compression of the signal into a burst format.
Once the signal has been channel encoded, it is modulated onto a carrier frequency by the modulator 110 and transmitted via the transmitter and antenna 120. A preferred modulation method is differential quaternary phase-shift keying (DQPSK).
One method to improve the reliability of a telecommunications network is to add error control processing at the transmitting and receiving ends of the network. As discussed above, one method of doing this is using a channel encoder which adds redundancy to the transmitted signal so that a receiving decoder may make a decoding decision based on more than a single bit.
One common type of error control technique used in digital telecommunications networks is a convolutional code. A convolutional code is a code which provides n output symbols for each group of k input symbols. The code rate is defined as R=k/n. For example, if two symbols are output for every one input symbol, the code rate is 1/2. To reduce the bit rate of the transmitter, not all bits are coded in a convolutional code. Since the individual bits of information in a speech frame have varying sensitivity to error, some bits may be coded while other bits may not. For example, in a two class system, the sensitive bits may be grouped into one class called class 1 and convolutionally coded while the less sensitive bits are grouped into another class called class 0 and transmitted without coding. (Bit sensitivity is the loss of quality of the decoded speech signal due to corruption of the particular bit.) While convolutional encoding provides adequate redundancy for effective error control, it also increases the bandwidth of the signal because it adds a number of symbols to the transmitted signal. The inverse of the code rate is known as the bandwidth expansion. Thus, for a 1/2 code rate, the bandwidth expansion is 2, i.e., the bandwidth used by the signal is doubled.
FIG. 2 is an example 200 of a convolutional code with four states (00, 01, 10, 11) and a rate of 1/2. As seen in FIG. 2, each state may transition to two other states depending on whether the information bits is a 1 or 0. Note the transition (branch 202) from state 10 to state 01.
One way to improve the bandwidth expansion of convolutional codes is to "puncture" the code. Puncturing a convolutional code means that periodically a certain number of bits in the convolutional encoder are deleted at a fixed rate. This rate is called the puncture rate and results in a higher code rate. Because the bandwidth expansion is the inverse of the code rate, the closer the code rate is to 1, the lower the bandwidth expansion. By puncturing, error correction properties may be nearly the same as for an unpunctured (or "mother") code, but the higher code rate provides significant bandwidth savings.
Some mobile telephone systems, such as Europe's GSM system, use rate compatible punctured convolutional codes. In the GSM system, for example, a fixed rate of 456 information bits per frame is used for the traffic channel, 78 bits per frame are used for the synchronization channel, and 36 bits per frame are used for the random access channel. These fixed configurations permit coding parameters, such as number of information bits per frame, the code rate, and the puncture rate, to be stored in a memory for recall when needed.
Recently, the trend in digital cellular communications is toward scalable channel coders. For example, ITU Recommendation, "Annex C to G.723.1--Scalable channel coding scheme for wireless applications to be used with dual-rate speech coder for multimedia communications transmitting at 5.3 & 6.3 kbits/sec", November 1996 ("G.723.1 Annex C"), recommends a scalable channel coder. The contents of this document are incorporated herein by reference. Full scalability introduces new variables. First, the output bit rate adapts to changes in input parameters and available capacity. Second, the protection requirement for different bit classes varies. Third, the available channel capacity varies between minimum and maximum boundary conditions. As a result, a new set of coding parameters is determined according to a defined algorithm for each encoded (or decoded) frame.
The encoding process for a scalable punctured convolutional coder includes the following:
1. Partitioning the block of information bits (i.e., k bits) into several classes according to bit sensitivity, such as class 1 and class 2 bits. For example, G.723.1 Annex C, defines five different bit classes; PA1 2. Coding each bit to be coded using a convolutional code having a rate k/n; and PA1 3. Puncturing the output bit stream according to a predetermined rate compatible punctured convolutional code for the particular class. PA1 1. The number of bit classes the information bits have been partitioned into (this may be a fixed number); PA1 2. The number of bits per frame to be coded (i.e., the number of k bits in each class to be coded); and PA1 3. The available size of the output codeword based on available channel capacity. That is, the total number of bits n the current channel can accept. PA1 1. The number of bits for each coding class per frame (i.e., the number of bits to be included in each class); and PA1 2. The puncture code per class. PA1 1. The number of bit classes (this may be a fixed number); PA1 2. The number of bits per frame to be coded (i.e., the number of k bits in each frame to be coded); and PA1 3. The available size of the output codeword based on available channel capacity (i.e., the number of n bits the channel can currently accept). PA1 1. The number of k bits per frame partitioned into each of the coding classes; and PA1 2. The puncture code per class.
These variable coding conditions per bit class are commonly referred to as unequal error protection schemes.
Three input variables for the rate compatible punctured convolutional coding are:
For each combination of these input variables, there are the following scalable coding parameters to be determined:
The puncture codes are a string of 1s and 0s mapping a periodic sequence of output bits from a convolutional encoder to a punctured sequence of those bits. A "0" indicates that a particular bit is "punctured", i.e., not transmitted. Puncture codes may be quite large and use as much as 3.times.16 bit words of memory for each code.
These parameters may be determined by a rate control algorithm proprietary to the specific channel coding specification. G.723.1 Annex C recommends that if the input variables change from one frame to the next, the rate control algorithm should be performed. This is disadvantageous because determining the coding parameters in real-time may be computationally intensive. For example, a non-optimal implementation of the rate control algorithm for G.723.1 Annex C on a Texas Instruments TMS320C5x DSP uses 6 MIPS of processing for each of the encoder and decoder stages. This may be performed many times during a single transmission, even as often as between each frame. As a result, real-time execution of the rate control algorithm is prohibitive.
Therefore, it is an object of the present invention to provide a method and device to provide the scalable coding parameters in real-time.
It is a further object of the present invention to provide the scalable coding parameters without computing the parameters in real-time and providing an economic advantage with regard to computational requirements.
It is yet a further object of the present invention to provide a method and device for storing and recalling the scalable coding parameters.